The disclosed embodiments relate in general to removable programmable components. More specifically, the disclosed embodiments relate to managing the ability to hot swap, program and/or reprogram programmable components.
High-availability systems and components, such as servers, network switches, system management functions, redundant-array-of-independent-disk (RAID) storage and other forms of communications infrastructure, need to be designed for near-zero downtime throughout their useful life. If a component of such a system fails or needs updating, it must be replaced without interrupting the rest of the system. In many instance, the failed or outdated board or module will have to be removed—and its replacement plugged in—while the system remains up and running. This process is known as hot swapping, or in some cases hot plugging (where the module interacts with the system software). To facilitate a safe hot swap, connectors may be provided with staggered pins (i.e., at least one pin is shorter than the others). Upon removal of the module, the so-called “short pin” loses contact before all the other pins, thereby providing other devices in the system an advanced warning that the module is being removed. Upon insertion of the module, the longer pins ensure that ground and local power are established before other connections are made. In addition, each printed-circuit board (PCB) or plug-in module has an on-board hot-swap controller to facilitate the safe removal and insertion of the module.
Programmable components present challenges when including them as hot swappable components of a high availability system. For example, where a first programmable component serves as a master to a second programmable component that serves as a slave, hot swapping the first programmable component could effectively shut down the second programmable component. Further, during either reprogramming of the master programmable component, or during replacement and programming of the master programmable component, reprogramming and/or programming will drive signal lines to various states that may or may not be the correct polarity for continued assertion of specific control signals. To avoid interruptions to overall system functionality, programmable component must be capable of being safely reprogrammed, hot swapped and/or programmed.